/* *****************************************************************************
 * Copyright (c) Huawei Technologies Co., Ltd. 2015-2022. All rights reserved.
 ******************************************************************************
  File name: Db_srv_type_pub.h
  Version No.: Draft
  Generated on May 28,: 2015
  Latest modification:
  Function Description: Sml_table.h header file
  Function list:
  Modification history:
  1. Date: 2015 May 28
    Modify content: Create a file.

***************************************************************************** */

#ifndef DB_SRV_TYPE_H
#define DB_SRV_TYPE_H

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* __cplusplus */

typedef enum {
    DOORBELL_CMDQ_SRV_TYPE = 0,
    DOORBELL_L2NIC_SRV_TYPE = 1,
    DOORBELL_ROCE_SRV_TYPE = 2,
    DOORBELL_ROCE_ARM_CQ_SRV_TYPE = 3,
    DOORBELL_NOF1_SRV_TYPE = 4,

    DOORBELL_VIRTIO_SRV_TYPE = 5,

    DOORBELL_TOE_RQ1_SRV_TYPE = 6,
    DOORBELL_TOE_RQ2_SRV_TYPE = 7,
    DOORBELL_TOE_RQ4_SRV_TYPE = 8,

    DOORBELL_TOE_ISCSI_TGT_SRV_TYPE = 9,
    DOORBELL_TOE_ISCSI_TGT_AA_HARD_SRV_TYPE = 10,
    DOORBELL_TOE_ISCSI_TGT_AA_PROTOCOL_SRV_TYPE = 11,

    DOORBELL_FC_PARENT_RQ1_SRV_TYPE = 12,
    DOORBELL_FC_PARENT_RQ2_SRV_TYPE = 13,
    DOORBELL_FC_PARENT_RQ4_SRV_TYPE = 14,

    REMOTE_DB_ROCE_SRV_TYPE = 15,
    DOORBELL_NOF2_SRV_TYPE = 16,

    DOORBELL_OVS_DPIF_TX_SRV_TYPE = 17,
    DOORBELL_NVME_SQ_SRV_TYPE = 18,
    DOORBELL_NVME_CQ_SRV_TYPE = 19,
    DOORBELL_PCQ_SRV_TYPE = 20, /* dsw volq doorbell(producer and consumer) */

    DOORBELL_ROCE_RQ_CNP_TYPE = 21,
    DOORBELL_ROCE_SQA_CNP_TYPE = 22,

    DOORBELL_RSVD25 = 25,
    DOORBELL_RSVD26 = 26,
    DOORBELL_NOF3_SRV_TYPE = 27,

    DOORBELL_FC_CHILD0_SRV_TYPE = 28,
    DOORBELL_FC_CHILD1_SRV_TYPE = 29,
    DOORBELL_FC_CHILD2_SRV_TYPE = 30,
    DOORBELL_RSV2 = 31, // For stateless timer
} doorbell_srv_type_e;

/* *
 * Enum name  :    armcq_type_e
 * @brief          xxxxxxxx
 * Description:    xxxxxxxxxxxxxxx
 */
typedef enum {
    ARMCQ_RDMA = 0,
    ARMCQ_TIFOE,
    ARMCQ_IWARP
} armcq_type_e;

typedef enum {
    NO_QUEUE_Q_TYPE,
    TOE_SQ_Q_TYPE,
    TOE_RQ_Q_TYPE,
    IOE_SQ_Q_TYPE,
    IOE_RQ_Q_TYPE,
    EMBEDED_CQ_Q_TYPE,
    ROCE_SQ_Q_TYPE,
    ROCE_RQ_Q_TYPE,
    EXTERNAL_CQ_Q_TYPE,
    SRQ_Q_TYPE
} doorbell_queue_type_e;

typedef enum {
    DB_CONTEXT_SIZE_256B,
    DB_CONTEXT_SIZE_512B,
    DB_CONTEXT_SIZE_RSVD,
    DB_CONTEXT_SIZE_1024B
} doorbell_context_size_e;

typedef enum {
    DB_KEY_SIZE_RSVD,
    DB_KEY_SIZE_10B,
    DB_KEY_SIZE_26B,
    DB_KEY_SIZE_42B
} doorbell_key_size_e;


/* * DB_SUBTYPE_E */
enum DB_SUBTYPE_E {
    DB_SUBTYPE_NONE = 0,
    DB_SUBTYPE_RC_SEND = 1,
    DB_SUBTYPE_RC_SEND_IMME = 2,
    DB_SUBTYPE_RC_WRITE = 3,
    DB_SUBTYPE_RC_WRITE_IMME = 4,
    DB_SUBTYPE_RC_READ = 5,
    DB_SUBTYPE_RC_ATOMIC_CMPSWP = 6,
    DB_SUBTYPE_RC_ATOMIC_FETCHADD = 7
};


#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */


#endif /* DB_SRV_TYPE_H */
